package com_1;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ReflectDemo {//定义一个反射类测试类
    public static void main(String[] args) throws Exception{
       //main方法入口，并抛出异常
        Class<?>  c= Class.forName("com.Student");
        //使用Class.forname获取指定的class文件
        Constructor<?>[] ct= c.getConstructors();
        //通过class文件获取类中所有公共方法的数组
        for (Constructor<?> cst : ct) {//遍历这个方法数组
            System.out.println(cst);//输出所有的公共方法
        }
        System.out.println("----------------");//分隔符
        Constructor<?> constructor = c.getConstructor();//获取类中单个公共方法
        Object o = constructor.newInstance();//使用获取的公共方法进行创建对象
        System.out.println(o);//输出这个对象
        System.out.println("------------------");
        Constructor<?> declaredConstructor = c.getDeclaredConstructor();
        //通过反射获取类中单个默然和私有的方法
        System.out.println(declaredConstructor);//
        System.out.println("---------------------");//
        Constructor<?>[] dcs= c.getDeclaredConstructors();//通过反射获取类中单个默然和私有的所有方法的数组
        for (Constructor<?> dc : dcs) {//使用增强for遍历得到的方法数组。这个数组中包括类中的默认方法和私有方法
            System.out.println(dc);//在控制台上输出获得方法
        }
    }
}
